// 
// @Auther: by wujehy
// @Email:wujehy@qq.com
// @Data:2021/1/31.
// @Time:下午3:33.
// 
//

#ifndef IFELSETOMAPTEST_BASEMOD_H
#define IFELSETOMAPTEST_BASEMOD_H
#include <string>
#include <memory>
#include "base_types.h"
/**
 * @brief 基础模块 , 接口类型 定义所谓的 map value
 */
class BaseMod
{
public:
    /**
     * @brief 用于标记模块的 类型 和子类型 , 和数据包相同
     * @return
     */
    virtual int getType() = 0 ;
    virtual int getSubType()= 0;

    /**
     * @brief 获取模块的信息 , 这个是不必要的 , 只是用来打印信息 好看而已
     * @return
     */
    virtual const char* getInfo() = 0 ;
   /**
    * @brief
    * @param packet
    */
    virtual void onMessage(std::unique_ptr<DataPacket> packet) = 0 ;

    /**
     * @brief 这个要在 基类里定义好 , 析构的时候很有用
     */
    virtual ~BaseMod();
};


#endif //IFELSETOMAPTEST_BASEMOD_H
